iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 30
4

完賽感想

這三十天無法對於MVC全部原始碼做詳細介紹,我盡量在這三十篇講述MVC執行過程中重要知識點,閱讀MVC原始碼真不是很簡單事情.

但閱讀完後我對於OOP和如何合理撰寫程式碼一個系統有更深入了解(因為MVC很多地方很好運用OOP概念原則)

希望大家經過閱讀這三十篇文章可以對於IIS託管和Asp.net MVC原理有更深入了解.

  1. Http對於IIS Server請求如何導向Asp.net MVC執行
  2. Asp.net MVC原始碼有基本了解和知道哪幾個重要類別,了解後能依照系統需要替換改寫.
  3. Asp.net MVC用到很多設計技巧,希望大家能更了解設計模式如何運用在實戰中
  4. 可以嘗試閱讀其他知名的開源框架(Dapper,AutoMapper,Autofac,Json.net.....)

如果想要了解Dapper原理讀者我推薦去閱讀,我隊友暐翰系列文章進階學習 ADO.NET、Dapper、Entity Framework 系列寫得很詳細且有影片教學大推!!

感謝這次的夥伴 [IT成長團]

感謝這次可以跟IT成長團的大家一起參與並完成It邦幫忙鐵人活動.

這三十天大家一起鼓勵,互相叮嚀鼓勵.這種感覺真的很棒 :)

下面是隊友們寫的優質系列文章,推薦大家一同去閱讀.

希望明年還有機會可以跟大家一起在參加鐵人賽衝一波,寫文章.

學習到新知識 (Expression表達式)

以前碰到動態建立物件或動作,我都是使用反射技巧來完成,透過了解ActionMethodDispatcher類別原始碼探討為何MVC不使用反射卻,而使用Expression表達式完成動態呼叫需求.

查了資料進而了解到Expression表達式用法且他想解決的問題,對於未來有多了一項武器可以運用.

設計模式運用在實戰中

設計模式不是紙上談兵,某些問題會使用某些方法來解決.

筆者對於設計模式也略有研究,對於DesignPattern有一個Repository做介紹,陸陸續續會補上我對於Design Pattern在現實生活上理解

MVC使用的許多設計模式和技巧,使用這些模式為了可讓程式變得好理解有意義

商業邏輯讓程式變複雜是必然,我們能做的是讓程式碼變得不會太難理解可以更好擴充

每個設計模式都有適合使用場景.

  • 工廠模式: 將使用動作和產生物件做一個區隔(依賴一個抽象).
  • 代理模式: 提供一個代理人不用對於原有程式碼進行修改(AOP就是利用此模式概念)
  • 裝飾者模式: 適合在需要一直改變物件狀態的情境
  • 建立者模式: 提供一個建立管道讓使用的提供要建立物件,最後可透過此模式來方便替換

還有許多模式就不一一介紹

像我很久之前就學過組合模式,只是對於此模式運用場景一直找不到.

直到看到複雜模型和簡單模型綁定如何將組合模式運用在實戰中.

透過MVC某區塊概念,引發建立開源專案想法

筆者看完Filter機制後就有感而發,這麼好用的方式可否運用在Service或其他地方(非Asp.net MVC,Web API區域).

我就依照上面標籤概念建立一個AwesomeProxy.NetAOP框架基於RealProxy這個物件.

想知道詳細資訊的讀者可自行查閱AwesomeProxy.NetReadme.md.

看完三十篇分享文後,希望台灣會有越來越多大大投入開源社群,我個人感觸是投入社群後我觸碰,接觸事物比我想想遠遠多很多.

文章目錄

此系列文分成三大部分

01 ~ 08 Day 介紹Http請求到MVC前Asp.net做了些什麼事情

[Day01] (開賽)Http 請求 Asp.net IIS伺服器架構

[Day02] Asp.Net支柱 IHttpMoudle & IHttphandler

[Day03] 啟動吧!Asp.Net IsapiRunTime & HttpRuntime

[Day04] 掌控HttpApplication物件建立 - HttpApplicationFactory

[Day05] Asp.Net重要物件HttpApplication(一) 初始化建立IHttpMoudule

[Day06] Asp.Net重要物件HttpApplication(二) 建置執行管道

[Day07] Asp.Net重要物件HttpApplication(三) 取得執行的IHttpHandler

[Day08] 揭密Mvc使用IHttpHandler by UrlRoutingModule-4.0

09 ~ 25 Day 介紹MVC原始碼

[Day09] 進入MVC原始碼世界 Route & RouteTable 原始碼解析

[Day10] 透過MvcRouteHandler取得呼叫IHttphandler

[Day11] Asp.net MVC Controller是怎麼被建立(原始碼揭密)

[Day12] 談談Controller幾個重要成員

[Day13] Asp.net MVC如何實現IOC解析器

[Day14] 反轉起來~透過IOC解析來執行依賴反轉

[Day15] Action方法如何被執行InvokeAction(一)

[Day16] MVC Filter 機制解密

[Day17] Action方法如何被執行InvokeAction(二)

[Day18] 提供ModelBing幾個重要功臣(Model)

[Day19] Http參數如何綁定到Action參數上(簡單和複雜模型綁定探討)

[Day20] 探討Model上客製化標籤如何被解析使用

[Day21] Model 探討驗證標籤(ValidationAttribute)

[Day22] View是如何被建立(一)

[Day23] 6個基本(ActionResult) View是如何被建立(二)

[Day24] 探討ViewEngine機制 View是如何被建立(三)

[Day25] 動態產生程式碼(WebViewPage) View是如何被建立(四)

26 ~ 29 Day 對於MVC進行擴充改造

[Day26] 動手DIY改造 Asp.net MVC- Route解析機制

[Day27] 動手DIY改造 Asp.net MVC- 自己動作建立一個DependencyResolver解析器(Autofac)

[Day28] 動手DIY改造 Asp.net MVC- 建立自己ActionInvoker和Model綁定機制

[Day29] 動手DIY改造 Asp.net MVC- 擴充在擴充,強化WebViewPage製作多國貨幣機制


上一篇
[Day29] 動手DIY改造 Asp.net MVC- 擴充在擴充,強化WebViewPage製作多國貨幣機制
系列文
從Asp.net框架角度進入Asp.net MVC原始碼30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
暐翰
iT邦大師 1 級 ‧ 2019-10-11 18:08:14

恭喜石頭大大完賽!!!
在IT邦跟S.O認識大大,今年又一起參加鐵人賽
等之後IT邦幫忙大會又可以見面,真棒 /images/emoticon/emoticon58.gif

石頭 iT邦高手 1 級 ‧ 2019-10-11 21:08:39 檢舉

謝謝 暐翰大大.
你今年的文章跟以往一樣超級用心且優質.
期待IT邦幫忙頒獎典禮的見面會^^

1
神Q超人
iT邦研究生 5 級 ‧ 2019-10-12 00:02:00

恭喜完賽 /images/emoticon/emoticon64.gif
今年結束的感覺也是很爽,有考慮下次再一起拼一波嗎 /images/emoticon/emoticon37.gif

石頭 iT邦高手 1 級 ‧ 2019-10-12 08:38:25 檢舉

哈哈 結束的感覺真的很爽XD
明年我看到時候的工作情況 如果可以再跟大家再拚一次

0
阿展展展
iT邦好手 1 級 ‧ 2020-02-20 11:19:08

恭喜完賽!!!

我要留言

立即登入留言